# -*- coding:utf-8 -*-
# @Time: 2021/7/27 17:43
# @Author: 付鹏飞
# @NOTE: 每天进步一点点
# @File: day_05_file.py
# @Function
'''
open() 函数有两个参数：文件名和模式。
有四种打开文件的不同方法（模式）：
"r" - 读取 - 默认值。打开文件进行读取，如果文件不存在则报错。
"a" - 追加 - 打开供追加的文件，如果不存在则创建该文件。
"w" - 写入 - 打开文件进行写入，如果文件不存在则创建该文件。
"x" - 创建 - 创建指定的文件，如果文件存在则返回错误。
此外，您可以指定文件是应该作为二进制还是文本模式进行处理。
"t" - 文本 - 默认值。文本模式。
"b" - 二进制 - 二进制模式（例如图像）。
#文件每行读取
'''


def read_file(file_path):
    content = ""
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            for line in f.readlines():
                content += line + "\n"
    except IOError:
        print('Error: 没有找到文件或读取文件失败')
    finally:
        f.close()
    return content


def write_file(file_path, content) -> object:
    try:
        with open(file_path, 'wb') as f:
            f.write(bytes(content, "utf-8"))
    except Exception:
        print('Error: 写入文件失败,请检查文件权限')
    else:
        f.close()
    return 'ok'


# 文件写入追加
def write_file_append(file_path, content):
    try:
        with open(file_path, "ab") as f:
            f.write(bytes(content,"utf-8"))
    except IOError:
        print("Error:文件追加失败")
    finally:
        f.close()
    return "文件追加成功"


'''
注意f.write(param)，param参数为字节类型，
可以使用bytes(content,'utf-8')或者content.encode()
否则报TypeError: a bytes-like object is required, not 'str'
'''

if __name__ == '__main__':
    write_file_append("A:/error", "hello,world")
#   write_file("A:/error",content)
